package com.sq.partner.manager.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.sq.partner.manager.common.Result;
import com.sq.partner.manager.mybatis.model.CardInfo;

/**
 * 激活卡卡单Dao
 * 
 * SQ
 *
 */
public interface CardInfoDao extends BaseDao {

    /**
     * 取得激活卡信息
     * 
     * @param cardNo
     * @return
     * @throws Exception
     */
    public CardInfo getCardInfoByCardNo(String cardNo)
            throws Exception;
    
    /**
     * 更新卡单表的暂存单号
     * @param cardNo
     * @param stagNo
     * @throws Exception
     */
    public Result updateStagNoByCardNo(Map<String, String> param) throws Exception;
    
    public void updateCardStatus(CardInfo cardInfo) throws Exception;
    
    /**
     * 根据暂存单号和投保单号取得卡单信息
     * @param appNo
     * @param stagNo
     * @return
     * @throws Exception
     */
    public CardInfo getCardInfoByAppNo(String appNo, String stagNo) throws Exception;
    
    /**
     * 查询暂存单下的卡总张数
     * @param stagNo
     * @return
     * @throws Exception
     */
    public int queryCardCountByStagNo(String stagNo) throws Exception;
    
    /**
     * 根据暂存单号和投保单号取得卡号
     * @param appNo
     * @param stagNo
     * @return
     * @throws Exception
     */
    public String getCardNoByAppNo(String appNo, String stagNo) throws Exception;
    
    /**
     * 把暂存单号下的所有卡单的暂存单号和投保单号置空
     * @param map
     * @return
     * @throws Exception
     */
    public boolean updateStagNoAndAppNoByStagNo(Map<String, String> map) throws Exception;
    
    /**
     * 出库ID取得卡单信息
     * @param commamtId
     * @return
     * @throws Exception
     */
    public List<CardInfo> getCardInfoListByCommantId(String commamtId) throws Exception;
    
    // 集中收款平台对接 2019/03/12 zhouxx start
    /**
     * 取同一個出库Id下的所有卡中最小的失效日期
     * @param commamtId
     * @return
     * @throws Exception
     */
    public Date getMinDisableDate(String commamtId) throws Exception;
    // 集中收款平台对接 2019/03/12 zhouxx end
    
    /**
     * 根据暂存单号和投保单号取得卡号和是否有价状态   20190329 helina
     * @param appNo
     * @param stagNo
     * @return
     * @throws Exception
     */
    public CardInfo getCardNoPriceByAppNo(String appNo, String stagNo) throws Exception;
}
